package com.tarena.lbs.basic.web.ex;

import com.tarena.lbs.base.protocol.exception.BusinessException;
import com.tarena.lbs.base.protocol.model.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

//全局异常处理类 配置一下所有控制层类所在的包 范围
@RestControllerAdvice(basePackages = "com.tarena.lbs.basic.web.controller")
@Slf4j
public class GlobalExceptionHandler {
    //处理业务异常 BusinessException
    @ExceptionHandler(BusinessException.class)
    public Result handleBusinessException(BusinessException e){
        //异常 有2个属性 code message 和result连个属性对应的
        log.error("出现业务异常",e);
        return Result.fail(e);
    }

    //不可控系统异常 Throwable
    @ExceptionHandler(Throwable.class)
    public Result handleThrowable(Throwable e){
        log.error("出现系统异常",e);
        return Result.fail();
    }
    //更多 更详细的异常在全局捕获来处理
}
